package co.com.inversiones.xyz.ltda.client;

import java.util.List;

import co.com.inversiones.xyz.ltda.client.server.SolicitudService;
import co.com.inversiones.xyz.ltda.shared.SolicitudListado;



import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Widget;

public class ListaSolicitudes extends Composite {

	private static ListaSolicitudesUiBinder uiBinder = GWT
			.create(ListaSolicitudesUiBinder.class);
	private String rol="";
	private String estado="";
	interface ListaSolicitudesUiBinder extends
			UiBinder<Widget, ListaSolicitudes> {
	}

	@UiField
	FlexTable tabla;
	
	public ListaSolicitudes(String rol) {
		
		this.rol=rol; 
		// inicializa valore de la FlexTable
		initWidget(uiBinder.createAndBindUi(this));
		tabla.setText(0, 0, "Codigo Solicitud");
		tabla.setText(0, 1, "Nombre");		
		tabla.setText(0, 2, "Correo electr\u00F3nico");
		tabla.setText(0, 3, "Tipo de solicitud");
		tabla.setText(0, 4, "Fecha de ingreso");
		tabla.setText(0, 5, "Producto");
		tabla.setText(0, 6, "Texto de la solicitud");
		tabla.setText(0, 7, "Revisar");
		tabla.setPixelSize(900, 50); 
		tabla.addStyleName("estiloTabla");
		tabla.getRowFormatter().addStyleName(0, "cabezeraTabla");
		tabla.getColumnFormatter().addStyleName(0, "estiloColu"); 
		tabla.getColumnFormatter().addStyleName(2, "estiloColu");
		tabla.getColumnFormatter().addStyleName(3, "estiloColu");
		tabla.getColumnFormatter().addStyleName(4, "estiloColu");
		tabla.getColumnFormatter().addStyleName(5, "estiloColu");
		tabla.getColumnFormatter().addStyleName(6, "estiloColu");
		tabla.getColumnFormatter().addStyleName(7, "estiloColu");
		
		if(rol.equals("gerente")){
			estado="Enviado"; 			
		}
//		if(rol.equals("SoporteBancario")){
//			estado="SoporteBancario"; 			
//		}
//		if(rol.equals("SoporteVentas")){
//			estado="SoporteVentas"; 			
//		}
//		if(rol.equals("SoporteTecnico")){
//			estado="SoporteTecnico"; 			
//		}
		else { estado=rol; }
		
		// Realiza la consulta de las solicitudes
		SolicitudService.Util.getInstance().leerSolicitudesGood(estado,new AsyncCallback<List<SolicitudListado>>(){
			
			 
				@Override
				public void onSuccess(List<SolicitudListado> result) {
					 
					if(result.size() == 0)  Window.alert("No Existen Solicitudes");
					// agruga todas las solicitudes
					for(SolicitudListado solicitud : result){
						agregarCliente(solicitud) ; 
					}
				}
				
				@Override
				public void onFailure(Throwable caught) {
					System.out.println("fallo"); 
				}
			});
	}

/*
 * Metodo que agrega una sola solicitud a la tabla (FlexTable)
 */
public void agregarCliente(final SolicitudListado solicitud){
		
		final int indice = tabla.getRowCount();
		
		tabla.setText(indice, 0, solicitud.getIdSolicitud()+"");
		tabla.setText(indice, 1, solicitud.getNombreCliente());
		tabla.setText(indice, 2, solicitud.getCorreo());
		tabla.setText(indice, 3, solicitud.getTipo());
		tabla.setText(indice, 4, solicitud.getFechaIngreso().toString());
		tabla.setText(indice, 5, solicitud.getProducto());
		tabla.setText(indice, 6, solicitud.getTexto());
		
			Button botonRevisar = new Button("Revisar");
			
			botonRevisar.addClickHandler(new ClickHandler() {
				
				@Override
				public void onClick(ClickEvent event) {
					
					Window.alert("Proximamente.....");
					
				}
			});
		
			tabla.setWidget(indice, 7, botonRevisar);
		}
	}

